1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.builder;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertTrue;
21
22 import java.math.BigInteger;
23
24 import org.junit.Test;
25
26
27
28
29
30
31 public class CompareToBuilderTest {
32
33
34
35 static class TestObject implements Comparable<TestObject> {
36 private int a;
37 public TestObject(final int a) {
38 this.a = a;
39 }
40 @Override
41 public boolean equals(final Object o) {
42 if (o == this) {
43 return true;
44 }
45 if (!(o instanceof TestObject)) {
46 return false;
47 }
48 final TestObject rhs = (TestObject) o;
49 return a == rhs.a;
50 }
51
52 @Override
53 public int hashCode() {
54 return a;
55 }
56
57 public void setA(final int a) {
58 this.a = a;
59 }
60
61 public int getA() {
62 return a;
63 }
64 @Override
65 public int compareTo(final TestObject rhs) {
66 return a < rhs.a ? -1 : a > rhs.a ? +1 : 0;
67 }
68 }
69
70 static class TestSubObject extends TestObject {
71 private int b;
72 public TestSubObject() {
73 super(0);
74 }
75 public TestSubObject(final int a, final int b) {
76 super(a);
77 this.b = b;
78 }
79 @Override
80 public boolean equals(final Object o) {
81 if (o == this) {
82 return true;
83 }
84 if (!(o instanceof TestSubObject)) {
85 return false;
86 }
87 final TestSubObject rhs = (TestSubObject) o;
88 return super.equals(o) && b == rhs.b;
89 }
90 }
91
92 static class TestTransientSubObject extends TestObject {
93 @SuppressWarnings("unused")
94 private transient int t;
95 public TestTransientSubObject(final int a, final int t) {
96 super(a);
97 this.t = t;
98 }
99 }
100
101 @Test
102 public void testReflectionCompare() {
103 final TestObject o1 = new TestObject(4);
104 final TestObject o2 = new TestObject(4);
105 assertTrue(CompareToBuilder.reflectionCompare(o1, o1) == 0);
106 assertTrue(CompareToBuilder.reflectionCompare(o1, o2) == 0);
107 o2.setA(5);
108 assertTrue(CompareToBuilder.reflectionCompare(o1, o2) < 0);
109 assertTrue(CompareToBuilder.reflectionCompare(o2, o1) > 0);
110 }
111
112 @Test(expected=NullPointerException.class)
113 public void testReflectionCompareEx1() {
114 final TestObject o1 = new TestObject(4);
115 CompareToBuilder.reflectionCompare(o1, null);
116 }
117
118 @Test(expected=ClassCastException.class)
119 public void testReflectionCompareEx2() {
120 final TestObject o1 = new TestObject(4);
121 final Object o2 = new Object();
122 CompareToBuilder.reflectionCompare(o1, o2);
123 }
124
125 @Test
126 public void testReflectionHierarchyCompare() {
127 testReflectionHierarchyCompare(false, null);
128 }
129
130 @Test
131 public void testReflectionHierarchyCompareExcludeFields() {
132 final String[] excludeFields = new String[] { "b" };
133 testReflectionHierarchyCompare(true, excludeFields);
134
135 TestSubObject x;
136 TestSubObject y;
137 TestSubObject z;
138
139 x = new TestSubObject(1, 1);
140 y = new TestSubObject(2, 1);
141 z = new TestSubObject(3, 1);
142 assertXYZCompareOrder(x, y, z, true, excludeFields);
143
144 x = new TestSubObject(1, 3);
145 y = new TestSubObject(2, 2);
146 z = new TestSubObject(3, 1);
147 assertXYZCompareOrder(x, y, z, true, excludeFields);
148 }
149
150 @Test
151 public void testReflectionHierarchyCompareTransients() {
152 testReflectionHierarchyCompare(true, null);
153
154 TestTransientSubObject x;
155 TestTransientSubObject y;
156 TestTransientSubObject z;
157
158 x = new TestTransientSubObject(1, 1);
159 y = new TestTransientSubObject(2, 2);
160 z = new TestTransientSubObject(3, 3);
161 assertXYZCompareOrder(x, y, z, true, null);
162
163 x = new TestTransientSubObject(1, 1);
164 y = new TestTransientSubObject(1, 2);
165 z = new TestTransientSubObject(1, 3);
166 assertXYZCompareOrder(x, y, z, true, null);
167 }
168
169 private void assertXYZCompareOrder(final Object x, final Object y, final Object z, final boolean testTransients, final String[] excludeFields) {
170 assertTrue(0 == CompareToBuilder.reflectionCompare(x, x, testTransients, null, excludeFields));
171 assertTrue(0 == CompareToBuilder.reflectionCompare(y, y, testTransients, null, excludeFields));
172 assertTrue(0 == CompareToBuilder.reflectionCompare(z, z, testTransients, null, excludeFields));
173
174 assertTrue(0 > CompareToBuilder.reflectionCompare(x, y, testTransients, null, excludeFields));
175 assertTrue(0 > CompareToBuilder.reflectionCompare(x, z, testTransients, null, excludeFields));
176 assertTrue(0 > CompareToBuilder.reflectionCompare(y, z, testTransients, null, excludeFields));
177
178 assertTrue(0 < CompareToBuilder.reflectionCompare(y, x, testTransients, null, excludeFields));
179 assertTrue(0 < CompareToBuilder.reflectionCompare(z, x, testTransients, null, excludeFields));
180 assertTrue(0 < CompareToBuilder.reflectionCompare(z, y, testTransients, null, excludeFields));
181 }
182
183 private void testReflectionHierarchyCompare(final boolean testTransients, final String[] excludeFields) {
184 final TestObject to1 = new TestObject(1);
185 final TestObject to2 = new TestObject(2);
186 final TestObject to3 = new TestObject(3);
187 final TestSubObject tso1 = new TestSubObject(1, 1);
188 final TestSubObject tso2 = new TestSubObject(2, 2);
189 final TestSubObject tso3 = new TestSubObject(3, 3);
190
191 assertReflectionCompareContract(to1, to1, to1, false, excludeFields);
192 assertReflectionCompareContract(to1, to2, to3, false, excludeFields);
193 assertReflectionCompareContract(tso1, tso1, tso1, false, excludeFields);
194 assertReflectionCompareContract(tso1, tso2, tso3, false, excludeFields);
195 assertReflectionCompareContract("1", "2", "3", false, excludeFields);
196
197 assertTrue(0 != CompareToBuilder.reflectionCompare(tso1, new TestSubObject(1, 0), testTransients));
198 assertTrue(0 != CompareToBuilder.reflectionCompare(tso1, new TestSubObject(0, 1), testTransients));
199
200
201 assertXYZCompareOrder(to1, to2, to3, true, null);
202
203 assertXYZCompareOrder(tso1, tso2, tso3, true, null);
204 }
205
206
207
208
209
210
211
212
213
214
215 private void assertReflectionCompareContract(final Object x, final Object y, final Object z, final boolean testTransients, final String[] excludeFields) {
216
217
218 assertTrue(reflectionCompareSignum(x, y, testTransients, excludeFields) == -reflectionCompareSignum(y, x, testTransients, excludeFields));
219
220
221 if (CompareToBuilder.reflectionCompare(x, y, testTransients, null, excludeFields) > 0
222 && CompareToBuilder.reflectionCompare(y, z, testTransients, null, excludeFields) > 0){
223 assertTrue(CompareToBuilder.reflectionCompare(x, z, testTransients, null, excludeFields) > 0);
224 }
225
226
227 if (CompareToBuilder.reflectionCompare(x, y, testTransients, null, excludeFields) == 0) {
228 assertTrue(reflectionCompareSignum(x, z, testTransients, excludeFields) == -reflectionCompareSignum(y, z, testTransients, excludeFields));
229 }
230
231
232 assertTrue(CompareToBuilder.reflectionCompare(x, y, testTransients) ==0 == EqualsBuilder.reflectionEquals(x, y, testTransients));
233 }
234
235
236
237
238
239
240
241
242
243
244
245 private int reflectionCompareSignum(final Object lhs, final Object rhs, final boolean testTransients, final String[] excludeFields) {
246 return BigInteger.valueOf(CompareToBuilder.reflectionCompare(lhs, rhs, testTransients)).signum();
247 }
248
249 @Test
250 public void testAppendSuper() {
251 final TestObject o1 = new TestObject(4);
252 final TestObject o2 = new TestObject(5);
253 assertTrue(new CompareToBuilder().appendSuper(0).append(o1, o1).toComparison() == 0);
254 assertTrue(new CompareToBuilder().appendSuper(0).append(o1, o2).toComparison() < 0);
255 assertTrue(new CompareToBuilder().appendSuper(0).append(o2, o1).toComparison() > 0);
256
257 assertTrue(new CompareToBuilder().appendSuper(-1).append(o1, o1).toComparison() < 0);
258 assertTrue(new CompareToBuilder().appendSuper(-1).append(o1, o2).toComparison() < 0);
259
260 assertTrue(new CompareToBuilder().appendSuper(1).append(o1, o1).toComparison() > 0);
261 assertTrue(new CompareToBuilder().appendSuper(1).append(o1, o2).toComparison() > 0);
262 }
263
264 @Test
265 public void testObject() {
266 final TestObject o1 = new TestObject(4);
267 final TestObject o2 = new TestObject(4);
268 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
269 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() == 0);
270 o2.setA(5);
271 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
272 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
273
274 assertTrue(new CompareToBuilder().append(o1, null).toComparison() > 0);
275 assertTrue(new CompareToBuilder().append((Object) null, (Object) null).toComparison() == 0);
276 assertTrue(new CompareToBuilder().append(null, o1).toComparison() < 0);
277 }
278
279 @Test
280 public void testObjectBuild() {
281 final TestObject o1 = new TestObject(4);
282 final TestObject o2 = new TestObject(4);
283 assertEquals(Integer.valueOf(0), new CompareToBuilder().append(o1, o1).build());
284 assertEquals(Integer.valueOf(0), new CompareToBuilder().append(o1, o2).build());
285 o2.setA(5);
286 assertTrue(new CompareToBuilder().append(o1, o2).build().intValue() < 0);
287 assertTrue(new CompareToBuilder().append(o2, o1).build().intValue() > 0);
288
289 assertTrue(new CompareToBuilder().append(o1, null).build().intValue() > 0);
290 assertEquals(Integer.valueOf(0), new CompareToBuilder().append((Object) null, (Object) null).build());
291 assertTrue(new CompareToBuilder().append(null, o1).build().intValue() < 0);
292 }
293
294 @Test(expected=ClassCastException.class)
295 public void testObjectEx2() {
296 final TestObject o1 = new TestObject(4);
297 final Object o2 = new Object();
298 new CompareToBuilder().append(o1, o2);
299 }
300
301 @Test
302 public void testObjectComparator() {
303 final String o1 = "Fred";
304 String o2 = "Fred";
305 assertTrue(new CompareToBuilder().append(o1, o1, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
306 assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
307 o2 = "FRED";
308 assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
309 assertTrue(new CompareToBuilder().append(o2, o1, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
310 o2 = "FREDA";
311 assertTrue(new CompareToBuilder().append(o1, o2, String.CASE_INSENSITIVE_ORDER).toComparison() < 0);
312 assertTrue(new CompareToBuilder().append(o2, o1, String.CASE_INSENSITIVE_ORDER).toComparison() > 0);
313
314 assertTrue(new CompareToBuilder().append(o1, null, String.CASE_INSENSITIVE_ORDER).toComparison() > 0);
315 assertTrue(new CompareToBuilder().append((Object) null, (Object) null, String.CASE_INSENSITIVE_ORDER).toComparison() == 0);
316 assertTrue(new CompareToBuilder().append(null, o1, String.CASE_INSENSITIVE_ORDER).toComparison() < 0);
317 }
318
319 @Test
320 public void testObjectComparatorNull() {
321 final String o1 = "Fred";
322 String o2 = "Fred";
323 assertTrue(new CompareToBuilder().append(o1, o1, null).toComparison() == 0);
324 assertTrue(new CompareToBuilder().append(o1, o2, null).toComparison() == 0);
325 o2 = "Zebra";
326 assertTrue(new CompareToBuilder().append(o1, o2, null).toComparison() < 0);
327 assertTrue(new CompareToBuilder().append(o2, o1, null).toComparison() > 0);
328
329 assertTrue(new CompareToBuilder().append(o1, null, null).toComparison() > 0);
330 assertTrue(new CompareToBuilder().append((Object) null, (Object) null, null).toComparison() == 0);
331 assertTrue(new CompareToBuilder().append(null, o1, null).toComparison() < 0);
332 }
333
334 @Test
335 public void testLong() {
336 final long o1 = 1L;
337 final long o2 = 2L;
338 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
339 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
340 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
341 assertTrue(new CompareToBuilder().append(o1, Long.MAX_VALUE).toComparison() < 0);
342 assertTrue(new CompareToBuilder().append(Long.MAX_VALUE, o1).toComparison() > 0);
343 assertTrue(new CompareToBuilder().append(o1, Long.MIN_VALUE).toComparison() > 0);
344 assertTrue(new CompareToBuilder().append(Long.MIN_VALUE, o1).toComparison() < 0);
345 }
346
347 @Test
348 public void testInt() {
349 final int o1 = 1;
350 final int o2 = 2;
351 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
352 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
353 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
354 assertTrue(new CompareToBuilder().append(o1, Integer.MAX_VALUE).toComparison() < 0);
355 assertTrue(new CompareToBuilder().append(Integer.MAX_VALUE, o1).toComparison() > 0);
356 assertTrue(new CompareToBuilder().append(o1, Integer.MIN_VALUE).toComparison() > 0);
357 assertTrue(new CompareToBuilder().append(Integer.MIN_VALUE, o1).toComparison() < 0);
358 }
359
360 @Test
361 public void testShort() {
362 final short o1 = 1;
363 final short o2 = 2;
364 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
365 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
366 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
367 assertTrue(new CompareToBuilder().append(o1, Short.MAX_VALUE).toComparison() < 0);
368 assertTrue(new CompareToBuilder().append(Short.MAX_VALUE, o1).toComparison() > 0);
369 assertTrue(new CompareToBuilder().append(o1, Short.MIN_VALUE).toComparison() > 0);
370 assertTrue(new CompareToBuilder().append(Short.MIN_VALUE, o1).toComparison() < 0);
371 }
372
373 @Test
374 public void testChar() {
375 final char o1 = 1;
376 final char o2 = 2;
377 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
378 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
379 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
380 assertTrue(new CompareToBuilder().append(o1, Character.MAX_VALUE).toComparison() < 0);
381 assertTrue(new CompareToBuilder().append(Character.MAX_VALUE, o1).toComparison() > 0);
382 assertTrue(new CompareToBuilder().append(o1, Character.MIN_VALUE).toComparison() > 0);
383 assertTrue(new CompareToBuilder().append(Character.MIN_VALUE, o1).toComparison() < 0);
384 }
385
386 @Test
387 public void testByte() {
388 final byte o1 = 1;
389 final byte o2 = 2;
390 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
391 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
392 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
393 assertTrue(new CompareToBuilder().append(o1, Byte.MAX_VALUE).toComparison() < 0);
394 assertTrue(new CompareToBuilder().append(Byte.MAX_VALUE, o1).toComparison() > 0);
395 assertTrue(new CompareToBuilder().append(o1, Byte.MIN_VALUE).toComparison() > 0);
396 assertTrue(new CompareToBuilder().append(Byte.MIN_VALUE, o1).toComparison() < 0);
397 }
398
399 @Test
400 public void testDouble() {
401 final double o1 = 1;
402 final double o2 = 2;
403 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
404 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
405 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
406 assertTrue(new CompareToBuilder().append(o1, Double.MAX_VALUE).toComparison() < 0);
407 assertTrue(new CompareToBuilder().append(Double.MAX_VALUE, o1).toComparison() > 0);
408 assertTrue(new CompareToBuilder().append(o1, Double.MIN_VALUE).toComparison() > 0);
409 assertTrue(new CompareToBuilder().append(Double.MIN_VALUE, o1).toComparison() < 0);
410 assertTrue(new CompareToBuilder().append(Double.NaN, Double.NaN).toComparison() == 0);
411 assertTrue(new CompareToBuilder().append(Double.NaN, Double.MAX_VALUE).toComparison() > 0);
412 assertTrue(new CompareToBuilder().append(Double.POSITIVE_INFINITY, Double.MAX_VALUE).toComparison() > 0);
413 assertTrue(new CompareToBuilder().append(Double.NEGATIVE_INFINITY, Double.MIN_VALUE).toComparison() < 0);
414 assertTrue(new CompareToBuilder().append(o1, Double.NaN).toComparison() < 0);
415 assertTrue(new CompareToBuilder().append(Double.NaN, o1).toComparison() > 0);
416 assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
417 assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
418 }
419
420 @Test
421 public void testFloat() {
422 final float o1 = 1;
423 final float o2 = 2;
424 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
425 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() < 0);
426 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() > 0);
427 assertTrue(new CompareToBuilder().append(o1, Float.MAX_VALUE).toComparison() < 0);
428 assertTrue(new CompareToBuilder().append(Float.MAX_VALUE, o1).toComparison() > 0);
429 assertTrue(new CompareToBuilder().append(o1, Float.MIN_VALUE).toComparison() > 0);
430 assertTrue(new CompareToBuilder().append(Float.MIN_VALUE, o1).toComparison() < 0);
431 assertTrue(new CompareToBuilder().append(Float.NaN, Float.NaN).toComparison() == 0);
432 assertTrue(new CompareToBuilder().append(Float.NaN, Float.MAX_VALUE).toComparison() > 0);
433 assertTrue(new CompareToBuilder().append(Float.POSITIVE_INFINITY, Float.MAX_VALUE).toComparison() > 0);
434 assertTrue(new CompareToBuilder().append(Float.NEGATIVE_INFINITY, Float.MIN_VALUE).toComparison() < 0);
435 assertTrue(new CompareToBuilder().append(o1, Float.NaN).toComparison() < 0);
436 assertTrue(new CompareToBuilder().append(Float.NaN, o1).toComparison() > 0);
437 assertTrue(new CompareToBuilder().append(-0.0, 0.0).toComparison() < 0);
438 assertTrue(new CompareToBuilder().append(0.0, -0.0).toComparison() > 0);
439 }
440
441 @Test
442 public void testBoolean() {
443 final boolean o1 = true;
444 final boolean o2 = false;
445 assertTrue(new CompareToBuilder().append(o1, o1).toComparison() == 0);
446 assertTrue(new CompareToBuilder().append(o2, o2).toComparison() == 0);
447 assertTrue(new CompareToBuilder().append(o1, o2).toComparison() > 0);
448 assertTrue(new CompareToBuilder().append(o2, o1).toComparison() < 0);
449 }
450
451 @Test
452 public void testObjectArray() {
453 final TestObject[] obj1 = new TestObject[2];
454 obj1[0] = new TestObject(4);
455 obj1[1] = new TestObject(5);
456 final TestObject[] obj2 = new TestObject[2];
457 obj2[0] = new TestObject(4);
458 obj2[1] = new TestObject(5);
459 final TestObject[] obj3 = new TestObject[3];
460 obj3[0] = new TestObject(4);
461 obj3[1] = new TestObject(5);
462 obj3[2] = new TestObject(6);
463
464 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
465 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
466 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
467 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
468
469 obj1[1] = new TestObject(7);
470 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
471 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
472
473 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
474 assertTrue(new CompareToBuilder().append((Object[]) null, (Object[]) null).toComparison() == 0);
475 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
476 }
477
478 @Test
479 public void testLongArray() {
480 final long[] obj1 = new long[2];
481 obj1[0] = 5L;
482 obj1[1] = 6L;
483 final long[] obj2 = new long[2];
484 obj2[0] = 5L;
485 obj2[1] = 6L;
486 final long[] obj3 = new long[3];
487 obj3[0] = 5L;
488 obj3[1] = 6L;
489 obj3[2] = 7L;
490
491 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
492 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
493 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
494 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
495
496 obj1[1] = 7;
497 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
498 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
499
500 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
501 assertTrue(new CompareToBuilder().append((long[]) null, (long[]) null).toComparison() == 0);
502 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
503 }
504
505 @Test
506 public void testIntArray() {
507 final int[] obj1 = new int[2];
508 obj1[0] = 5;
509 obj1[1] = 6;
510 final int[] obj2 = new int[2];
511 obj2[0] = 5;
512 obj2[1] = 6;
513 final int[] obj3 = new int[3];
514 obj3[0] = 5;
515 obj3[1] = 6;
516 obj3[2] = 7;
517
518 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
519 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
520 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
521 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
522
523 obj1[1] = 7;
524 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
525 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
526
527 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
528 assertTrue(new CompareToBuilder().append((int[]) null, (int[]) null).toComparison() == 0);
529 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
530 }
531
532 @Test
533 public void testShortArray() {
534 final short[] obj1 = new short[2];
535 obj1[0] = 5;
536 obj1[1] = 6;
537 final short[] obj2 = new short[2];
538 obj2[0] = 5;
539 obj2[1] = 6;
540 final short[] obj3 = new short[3];
541 obj3[0] = 5;
542 obj3[1] = 6;
543 obj3[2] = 7;
544
545 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
546 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
547 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
548 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
549
550 obj1[1] = 7;
551 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
552 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
553
554 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
555 assertTrue(new CompareToBuilder().append((short[]) null, (short[]) null).toComparison() == 0);
556 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
557 }
558
559 @Test
560 public void testCharArray() {
561 final char[] obj1 = new char[2];
562 obj1[0] = 5;
563 obj1[1] = 6;
564 final char[] obj2 = new char[2];
565 obj2[0] = 5;
566 obj2[1] = 6;
567 final char[] obj3 = new char[3];
568 obj3[0] = 5;
569 obj3[1] = 6;
570 obj3[2] = 7;
571
572 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
573 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
574 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
575 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
576
577 obj1[1] = 7;
578 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
579 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
580
581 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
582 assertTrue(new CompareToBuilder().append((char[]) null, (char[]) null).toComparison() == 0);
583 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
584 }
585
586 @Test
587 public void testByteArray() {
588 final byte[] obj1 = new byte[2];
589 obj1[0] = 5;
590 obj1[1] = 6;
591 final byte[] obj2 = new byte[2];
592 obj2[0] = 5;
593 obj2[1] = 6;
594 final byte[] obj3 = new byte[3];
595 obj3[0] = 5;
596 obj3[1] = 6;
597 obj3[2] = 7;
598
599 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
600 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
601 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
602 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
603
604 obj1[1] = 7;
605 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
606 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
607
608 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
609 assertTrue(new CompareToBuilder().append((byte[]) null, (byte[]) null).toComparison() == 0);
610 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
611 }
612
613 @Test
614 public void testDoubleArray() {
615 final double[] obj1 = new double[2];
616 obj1[0] = 5;
617 obj1[1] = 6;
618 final double[] obj2 = new double[2];
619 obj2[0] = 5;
620 obj2[1] = 6;
621 final double[] obj3 = new double[3];
622 obj3[0] = 5;
623 obj3[1] = 6;
624 obj3[2] = 7;
625
626 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
627 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
628 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
629 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
630
631 obj1[1] = 7;
632 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
633 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
634
635 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
636 assertTrue(new CompareToBuilder().append((double[]) null, (double[]) null).toComparison() == 0);
637 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
638 }
639
640 @Test
641 public void testFloatArray() {
642 final float[] obj1 = new float[2];
643 obj1[0] = 5;
644 obj1[1] = 6;
645 final float[] obj2 = new float[2];
646 obj2[0] = 5;
647 obj2[1] = 6;
648 final float[] obj3 = new float[3];
649 obj3[0] = 5;
650 obj3[1] = 6;
651 obj3[2] = 7;
652
653 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
654 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
655 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
656 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
657
658 obj1[1] = 7;
659 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
660 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
661
662 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
663 assertTrue(new CompareToBuilder().append((float[]) null, (float[]) null).toComparison() == 0);
664 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
665 }
666
667 @Test
668 public void testBooleanArray() {
669 final boolean[] obj1 = new boolean[2];
670 obj1[0] = true;
671 obj1[1] = false;
672 final boolean[] obj2 = new boolean[2];
673 obj2[0] = true;
674 obj2[1] = false;
675 final boolean[] obj3 = new boolean[3];
676 obj3[0] = true;
677 obj3[1] = false;
678 obj3[2] = true;
679
680 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
681 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
682 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
683 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
684
685 obj1[1] = true;
686 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
687 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
688
689 assertTrue(new CompareToBuilder().append(obj1, null).toComparison() > 0);
690 assertTrue(new CompareToBuilder().append((boolean[]) null, (boolean[]) null).toComparison() == 0);
691 assertTrue(new CompareToBuilder().append(null, obj1).toComparison() < 0);
692 }
693
694 @Test
695 public void testMultiLongArray() {
696 final long[][] array1 = new long[2][2];
697 final long[][] array2 = new long[2][2];
698 final long[][] array3 = new long[2][3];
699 for (int i = 0; i < array1.length; ++i) {
700 for (int j = 0; j < array1[0].length; j++) {
701 array1[i][j] = (i + 1) * (j + 1);
702 array2[i][j] = (i + 1) * (j + 1);
703 array3[i][j] = (i + 1) * (j + 1);
704 }
705 }
706 array3[1][2] = 100;
707 array3[1][2] = 100;
708
709 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
710 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
711 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
712 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
713 array1[1][1] = 200;
714 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
715 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
716 }
717
718 @Test
719 public void testMultiIntArray() {
720 final int[][] array1 = new int[2][2];
721 final int[][] array2 = new int[2][2];
722 final int[][] array3 = new int[2][3];
723 for (int i = 0; i < array1.length; ++i) {
724 for (int j = 0; j < array1[0].length; j++) {
725 array1[i][j] = (i + 1) * (j + 1);
726 array2[i][j] = (i + 1) * (j + 1);
727 array3[i][j] = (i + 1) * (j + 1);
728 }
729 }
730 array3[1][2] = 100;
731 array3[1][2] = 100;
732
733 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
734 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
735 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
736 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
737 array1[1][1] = 200;
738 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
739 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
740 }
741
742 @Test
743 public void testMultiShortArray() {
744 final short[][] array1 = new short[2][2];
745 final short[][] array2 = new short[2][2];
746 final short[][] array3 = new short[2][3];
747 for (short i = 0; i < array1.length; ++i) {
748 for (short j = 0; j < array1[0].length; j++) {
749 array1[i][j] = (short)((i + 1) * (j + 1));
750 array2[i][j] = (short)((i + 1) * (j + 1));
751 array3[i][j] = (short)((i + 1) * (j + 1));
752 }
753 }
754 array3[1][2] = 100;
755 array3[1][2] = 100;
756
757 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
758 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
759 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
760 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
761 array1[1][1] = 200;
762 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
763 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
764 }
765
766 @Test
767 public void testMultiCharArray() {
768 final char[][] array1 = new char[2][2];
769 final char[][] array2 = new char[2][2];
770 final char[][] array3 = new char[2][3];
771 for (short i = 0; i < array1.length; ++i) {
772 for (short j = 0; j < array1[0].length; j++) {
773 array1[i][j] = (char)((i + 1) * (j + 1));
774 array2[i][j] = (char)((i + 1) * (j + 1));
775 array3[i][j] = (char)((i + 1) * (j + 1));
776 }
777 }
778 array3[1][2] = 100;
779 array3[1][2] = 100;
780
781 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
782 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
783 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
784 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
785 array1[1][1] = 200;
786 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
787 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
788 }
789
790 @Test
791 public void testMultiByteArray() {
792 final byte[][] array1 = new byte[2][2];
793 final byte[][] array2 = new byte[2][2];
794 final byte[][] array3 = new byte[2][3];
795 for (byte i = 0; i < array1.length; ++i) {
796 for (byte j = 0; j < array1[0].length; j++) {
797 array1[i][j] = (byte)((i + 1) * (j + 1));
798 array2[i][j] = (byte)((i + 1) * (j + 1));
799 array3[i][j] = (byte)((i + 1) * (j + 1));
800 }
801 }
802 array3[1][2] = 100;
803 array3[1][2] = 100;
804
805 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
806 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
807 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
808 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
809 array1[1][1] = 127;
810 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
811 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
812 }
813
814 @Test
815 public void testMultiFloatArray() {
816 final float[][] array1 = new float[2][2];
817 final float[][] array2 = new float[2][2];
818 final float[][] array3 = new float[2][3];
819 for (int i = 0; i < array1.length; ++i) {
820 for (int j = 0; j < array1[0].length; j++) {
821 array1[i][j] = (i + 1) * (j + 1);
822 array2[i][j] = (i + 1) * (j + 1);
823 array3[i][j] = (i + 1) * (j + 1);
824 }
825 }
826 array3[1][2] = 100;
827 array3[1][2] = 100;
828
829 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
830 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
831 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
832 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
833 array1[1][1] = 127;
834 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
835 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
836 }
837
838 @Test
839 public void testMultiDoubleArray() {
840 final double[][] array1 = new double[2][2];
841 final double[][] array2 = new double[2][2];
842 final double[][] array3 = new double[2][3];
843 for (int i = 0; i < array1.length; ++i) {
844 for (int j = 0; j < array1[0].length; j++) {
845 array1[i][j] = (i + 1) * (j + 1);
846 array2[i][j] = (i + 1) * (j + 1);
847 array3[i][j] = (i + 1) * (j + 1);
848 }
849 }
850 array3[1][2] = 100;
851 array3[1][2] = 100;
852
853 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
854 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
855 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
856 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
857 array1[1][1] = 127;
858 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
859 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
860 }
861
862 @Test
863 public void testMultiBooleanArray() {
864 final boolean[][] array1 = new boolean[2][2];
865 final boolean[][] array2 = new boolean[2][2];
866 final boolean[][] array3 = new boolean[2][3];
867 for (int i = 0; i < array1.length; ++i) {
868 for (int j = 0; j < array1[0].length; j++) {
869 array1[i][j] = i == 1 ^ j == 1;
870 array2[i][j] = i == 1 ^ j == 1;
871 array3[i][j] = i == 1 ^ j == 1;
872 }
873 }
874 array3[1][2] = false;
875 array3[1][2] = false;
876
877 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
878 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
879 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
880 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
881 array1[1][1] = true;
882 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
883 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
884 }
885
886 @Test
887 public void testRaggedArray() {
888 final long array1[][] = new long[2][];
889 final long array2[][] = new long[2][];
890 final long array3[][] = new long[3][];
891 for (int i = 0; i < array1.length; ++i) {
892 array1[i] = new long[2];
893 array2[i] = new long[2];
894 array3[i] = new long[3];
895 for (int j = 0; j < array1[i].length; ++j) {
896 array1[i][j] = (i + 1) * (j + 1);
897 array2[i][j] = (i + 1) * (j + 1);
898 array3[i][j] = (i + 1) * (j + 1);
899 }
900 }
901 array3[1][2] = 100;
902 array3[1][2] = 100;
903
904
905 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
906 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
907 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
908 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
909 array1[1][1] = 200;
910 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
911 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
912 }
913
914 @Test
915 public void testMixedArray() {
916 final Object array1[] = new Object[2];
917 final Object array2[] = new Object[2];
918 final Object array3[] = new Object[2];
919 for (int i = 0; i < array1.length; ++i) {
920 array1[i] = new long[2];
921 array2[i] = new long[2];
922 array3[i] = new long[3];
923 for (int j = 0; j < 2; ++j) {
924 ((long[]) array1[i])[j] = (i + 1) * (j + 1);
925 ((long[]) array2[i])[j] = (i + 1) * (j + 1);
926 ((long[]) array3[i])[j] = (i + 1) * (j + 1);
927 }
928 }
929 ((long[]) array3[0])[2] = 1;
930 ((long[]) array3[1])[2] = 1;
931 assertTrue(new CompareToBuilder().append(array1, array1).toComparison() == 0);
932 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() == 0);
933 assertTrue(new CompareToBuilder().append(array1, array3).toComparison() < 0);
934 assertTrue(new CompareToBuilder().append(array3, array1).toComparison() > 0);
935 ((long[]) array1[1])[1] = 200;
936 assertTrue(new CompareToBuilder().append(array1, array2).toComparison() > 0);
937 assertTrue(new CompareToBuilder().append(array2, array1).toComparison() < 0);
938 }
939
940 @Test
941 public void testObjectArrayHiddenByObject() {
942 final TestObject[] array1 = new TestObject[2];
943 array1[0] = new TestObject(4);
944 array1[1] = new TestObject(5);
945 final TestObject[] array2 = new TestObject[2];
946 array2[0] = new TestObject(4);
947 array2[1] = new TestObject(5);
948 final TestObject[] array3 = new TestObject[3];
949 array3[0] = new TestObject(4);
950 array3[1] = new TestObject(5);
951 array3[2] = new TestObject(6);
952
953 final Object obj1 = array1;
954 final Object obj2 = array2;
955 final Object obj3 = array3;
956
957 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
958 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
959 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
960 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
961
962 array1[1] = new TestObject(7);
963 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
964 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
965 }
966
967 @Test
968 public void testLongArrayHiddenByObject() {
969 final long[] array1 = new long[2];
970 array1[0] = 5L;
971 array1[1] = 6L;
972 final long[] array2 = new long[2];
973 array2[0] = 5L;
974 array2[1] = 6L;
975 final long[] array3 = new long[3];
976 array3[0] = 5L;
977 array3[1] = 6L;
978 array3[2] = 7L;
979 final Object obj1 = array1;
980 final Object obj2 = array2;
981 final Object obj3 = array3;
982 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
983 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
984 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
985 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
986
987 array1[1] = 7;
988 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
989 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
990 }
991
992 @Test
993 public void testIntArrayHiddenByObject() {
994 final int[] array1 = new int[2];
995 array1[0] = 5;
996 array1[1] = 6;
997 final int[] array2 = new int[2];
998 array2[0] = 5;
999 array2[1] = 6;
1000 final int[] array3 = new int[3];
1001 array3[0] = 5;
1002 array3[1] = 6;
1003 array3[2] = 7;
1004 final Object obj1 = array1;
1005 final Object obj2 = array2;
1006 final Object obj3 = array3;
1007 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1008 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1009 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1010 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1011
1012 array1[1] = 7;
1013 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1014 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1015 }
1016
1017 @Test
1018 public void testShortArrayHiddenByObject() {
1019 final short[] array1 = new short[2];
1020 array1[0] = 5;
1021 array1[1] = 6;
1022 final short[] array2 = new short[2];
1023 array2[0] = 5;
1024 array2[1] = 6;
1025 final short[] array3 = new short[3];
1026 array3[0] = 5;
1027 array3[1] = 6;
1028 array3[2] = 7;
1029 final Object obj1 = array1;
1030 final Object obj2 = array2;
1031 final Object obj3 = array3;
1032 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1033 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1034 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1035 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1036
1037 array1[1] = 7;
1038 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1039 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1040 }
1041
1042 @Test
1043 public void testCharArrayHiddenByObject() {
1044 final char[] array1 = new char[2];
1045 array1[0] = 5;
1046 array1[1] = 6;
1047 final char[] array2 = new char[2];
1048 array2[0] = 5;
1049 array2[1] = 6;
1050 final char[] array3 = new char[3];
1051 array3[0] = 5;
1052 array3[1] = 6;
1053 array3[2] = 7;
1054 final Object obj1 = array1;
1055 final Object obj2 = array2;
1056 final Object obj3 = array3;
1057 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1058 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1059 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1060 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1061
1062 array1[1] = 7;
1063 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1064 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1065 }
1066
1067 @Test
1068 public void testByteArrayHiddenByObject() {
1069 final byte[] array1 = new byte[2];
1070 array1[0] = 5;
1071 array1[1] = 6;
1072 final byte[] array2 = new byte[2];
1073 array2[0] = 5;
1074 array2[1] = 6;
1075 final byte[] array3 = new byte[3];
1076 array3[0] = 5;
1077 array3[1] = 6;
1078 array3[2] = 7;
1079 final Object obj1 = array1;
1080 final Object obj2 = array2;
1081 final Object obj3 = array3;
1082 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1083 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1084 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1085 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1086
1087 array1[1] = 7;
1088 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1089 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1090 }
1091
1092 @Test
1093 public void testDoubleArrayHiddenByObject() {
1094 final double[] array1 = new double[2];
1095 array1[0] = 5;
1096 array1[1] = 6;
1097 final double[] array2 = new double[2];
1098 array2[0] = 5;
1099 array2[1] = 6;
1100 final double[] array3 = new double[3];
1101 array3[0] = 5;
1102 array3[1] = 6;
1103 array3[2] = 7;
1104 final Object obj1 = array1;
1105 final Object obj2 = array2;
1106 final Object obj3 = array3;
1107 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1108 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1109 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1110 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1111
1112 array1[1] = 7;
1113 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1114 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1115 }
1116
1117 @Test
1118 public void testFloatArrayHiddenByObject() {
1119 final float[] array1 = new float[2];
1120 array1[0] = 5;
1121 array1[1] = 6;
1122 final float[] array2 = new float[2];
1123 array2[0] = 5;
1124 array2[1] = 6;
1125 final float[] array3 = new float[3];
1126 array3[0] = 5;
1127 array3[1] = 6;
1128 array3[2] = 7;
1129 final Object obj1 = array1;
1130 final Object obj2 = array2;
1131 final Object obj3 = array3;
1132 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1133 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1134 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1135 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1136
1137 array1[1] = 7;
1138 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1139 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1140 }
1141
1142 @Test
1143 public void testBooleanArrayHiddenByObject() {
1144 final boolean[] array1 = new boolean[2];
1145 array1[0] = true;
1146 array1[1] = false;
1147 final boolean[] array2 = new boolean[2];
1148 array2[0] = true;
1149 array2[1] = false;
1150 final boolean[] array3 = new boolean[3];
1151 array3[0] = true;
1152 array3[1] = false;
1153 array3[2] = true;
1154 final Object obj1 = array1;
1155 final Object obj2 = array2;
1156 final Object obj3 = array3;
1157 assertTrue(new CompareToBuilder().append(obj1, obj1).toComparison() == 0);
1158 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() == 0);
1159 assertTrue(new CompareToBuilder().append(obj1, obj3).toComparison() < 0);
1160 assertTrue(new CompareToBuilder().append(obj3, obj1).toComparison() > 0);
1161
1162 array1[1] = true;
1163 assertTrue(new CompareToBuilder().append(obj1, obj2).toComparison() > 0);
1164 assertTrue(new CompareToBuilder().append(obj2, obj1).toComparison() < 0);
1165 }
1166
1167 }